// PeripheralInfo.h
#pragma once
#include <Arduino.h>
#include <driver/adc.h>
#include <soc/soc_caps.h>

class PeripheralInfo {
public:
    static String getAllPeripheralInfo();
    
private:
    // 各外设信息获取方法
    static String getADCInfo();
    static String getDACInfo();
    static String getTouchInfo();
    static String getPWMInfo();
    static String getSPIInfo();
    static String getI2CInfo();
    static String getUARTInfo();
    static String getLEDInfo();
    static String getButtonInfo();
    
    // 辅助方法
    static String formatPinList(const int* pins, int count);
    static String getChipSpecificInfo();
    
    // 外设检测方法 - 基于 soc_caps.h 的实际定义
    static bool hasADC();
    static bool hasDAC();
    static bool hasTouch();
    static bool hasPWM();
    static bool hasSPI();
    static bool hasI2C();
    static bool hasUART();
    static bool hasDedicatedGPIO();
    static bool hasTWAI();
    static bool hasUSBJTAG();
    static bool hasTempSensor();
    
    // 芯片型号检测
    static String getChipModelName();
};